package com.epoint.service;

import java.util.Calendar;
import java.util.List;

import com.epoint.dao.ProductInfoDao;
import com.epoint.entity.ProductInfo;

/**
 * @Description
 * @author ylc
 */
public class ProductInfoServicce {
	ProductInfoDao productInfoDao = new ProductInfoDao();

	/**
	 * 获取产品信息列表
	 * 
	 * @param productName
	 * @param productUsage
	 * @param pageIndex
	 * @param pageSize
	 * @param sortField
	 * @param sortOrder
	 * @return
	 */
	public List<ProductInfo> getProductList(String productName, String productUsage, int pageIndex, int pageSize,
			String sortField, String sortOrder) {
		return productInfoDao.getProductList(productName, productUsage, pageIndex, pageSize, sortField, sortOrder);
	}

	/**
	 * 获取产品列表总数
	 * 
	 * @param productName
	 * @param productUsage
	 * @return
	 */
	public int getProductListCount(String productName, String productUsage) {
		return productInfoDao.getProductListCount(productName, productUsage);
	}

	/**
	 * 根据Id获取产品信息
	 * 
	 * @return
	 */
	public ProductInfo getProductInfo(String productId) {
		return productInfoDao.getProductInfo(productId);
	}

	/**
	 * 根据Id查询产品信息
	 * 
	 * @param productId
	 * @return
	 */
	public ProductInfo findById(String productId) {
		return productInfoDao.findById(productId);
	}

	/**
	 * 根据Id删除产品信息
	 * 
	 * @param productId
	 */
	public int deleteProductByProductId(String productId) {
		return productInfoDao.deleteProductByProductId(productId);
	}

	/**
	 * 获取下一个产品编号
	 * 
	 * @return
	 */
	public String getNextProductId() {
		Calendar calendar = Calendar.getInstance();
		// 获取当前年份
		String nowYear = Integer.toString(calendar.get(Calendar.YEAR));
		// 获取当前月份
		String nowMonth = Integer.toString(calendar.get(Calendar.MONTH));

		int nextNumber = 1;
		// 获取数据库中最大的序列号
		String maxId = geteMaxProductId();
		if (!"".equals(maxId)) {
			// 处理最大值
			String maxYear = maxId.substring(2, 6);
			// 最大年份为当前年份直接+1
			if (nowYear.equals(maxYear)) {
				nextNumber = Integer.parseInt(maxId.substring(8)) + 1;
			} // else序列号重新计算
		}
		return "PD" + nowYear + String.format("%02d", Integer.valueOf(nowMonth) + 1)
				+ String.format("%03d", Integer.valueOf(nextNumber));
	}

	/**
	 * 获取最大产品编号
	 * 
	 * @return
	 */
	public String geteMaxProductId() {
		return productInfoDao.getMaxProductId();
	}

	/**
	 * 新增产品信息
	 * 
	 * @param productInfo
	 * @return
	 */
	public int addProductInfo(ProductInfo productInfo) {
		// 产品名称不能重复，如有重复，保存时在产品名称后面加上产品编号，如“发电机PD202112008”
		String productName = productInfo.getProductName();
		int res = productInfoDao.isSameName(productName);
		if (res > 0) {
			// 名称重复
			productInfo.setProductName(productName + productInfo.getProductId());
		}
		return productInfoDao.addProductInfo(productInfo);
	}

	/**
	 * 获取所有产品名称
	 * @return
	 */
	public List<ProductInfo> getAllProducts() {
		return productInfoDao.getAllProducts();
	}

	/**
	 * 更新产品信息
	 * @param productInfo
	 * @return
	 */
	public int updateProductInfo(ProductInfo productInfo) {
		return productInfoDao.updateProductInfo(productInfo);
	}

}
